// String.prototype.equals = function (e) {
//     return this === e;
// };
// String.prototype.repeatify = function (e) {
//     var t = "";
//     for (var o = 0; o < e; o++) {
//         t += this;
//     }
//     return t;
// };
// String.prototype.firstUpperCase = function () {
//     return this.substring(0, 1).toUpperCase() + this.substring(1);
// };
// String.prototype.getStrLength = function () {
//     var e = 0;
//     for (var t = 0; t < this.length; t++) {
//         var o = this.charCodeAt(t);
//         (o >= 1 && o <= 126) || (65376 <= o && o <= 65439) ? e++ : (e += 2);
//     }
//     return e;
// };
// String.format = function () {
//     var e = [];
//     var t = 0;
//     for (var o = arguments.length; t < o; t++) {
//         e.push(arguments[t]);
//     }
//     var i = e[0];
//     return "string" != typeof i
//         ? (EDITOR || error("String.format error,first param is not a string"), "")
//         : (e.shift(),
//           Array.isArray(e[0]) && 1 == e.length && (e = e[0]),
//           i.replace(/\{(\d+)\}/g, function (t, o) {
//               return e[o];
//           }));
// };
// String.hashCode = function (e) {
//     var t;
//     var o = 0;
//     if (0 === e.length) {
//         return o;
//     }
//     for (t = 0; t < e.length; t++) {
//         o = (o << 5) - o + e.charCodeAt(t);
//         o |= 0;
//     }
//     return o;
// };


// 扩展String原型的equals方法
String.prototype.equals = function (compareString) {
    return this === compareString;
};

// 扩展String原型的repeatify方法
String.prototype.repeatify = function (count) {
    let result = "";
    for (let i = 0; i < count; i++) {
        result += this;
    }
    return result;
};

// 扩展String原型的firstUpperCase方法
String.prototype.firstUpperCase = function () {
    return this.substring(0, 1).toUpperCase() + this.substring(1);
};

// 扩展String原型的getStrLength方法
String.prototype.getStrLength = function () {
    let length = 0;
    for (let i = 0; i < this.length; i++) {
        const charCode = this.charCodeAt(i);
        ((charCode >= 1 && charCode <= 126) || (charCode >= 65376 && charCode <= 65439)) ? length++ : (length += 2);
    }
    return length;
};

// String类的静态format方法
String.format = function () {
    const args = Array.from(arguments);
    const formatString = args[0];

    if (typeof formatString !== 'string') {
        if (EDITOR) {
            error("String.format error, first param is not a string");
        }
        return "";
    }

    args.shift();
    if (Array.isArray(args[0]) && args.length === 1) {
        args = args[0];
    }

    return formatString.replace(/\{(\d+)\}/g, (match, index) => {
        return args[index];
    });
};

// String类的静态hashCode方法
String.hashCode = function (str) {
    let hash = 0;
    if (str.length === 0) {
        return hash;
    }
    for (let i = 0; i < str.length; i++) {
        hash = (hash << 5) - hash + str.charCodeAt(i);
        hash |= 0; // 将hash值转换为32位整数
    }
    return hash;
};
